/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


var AMIVAL = 3.15;
var AISVAL = 2.65;
var DIVAL = 10.0;

var totalFacture = 0.0;

function afficherFacture(prenom, nom, actes)
{
    totalFacture = 0.0;
    var text = "<html>\n";
    text +=
            "    <head>\n\
            <title>Facture</title>\n\
            <link rel='stylesheet' type='text/css' href='css/facture.css'/>\n\
         </head>\n\
         <body>\n";

         text += "<h1>Facture</h1>";
    text +=  prenom + " " + nom + "<br/>";


    // Trouver l'adresse du patient
    var xmlDoc = loadXMLDoc("data/cabinetInf.xml");
    var patients = xmlDoc.getElementsByTagName("patient");
    var i = 0;
    var found = false;

    while ((i < patients.length) && (!found)) {
        var patient = patients[i];
        var localNom = patient.getElementsByTagName("nom").item(0).childNodes[0].nodeValue;
        var localPrenom = patient.getElementsByTagName("prenom").item(0).childNodes[0].nodeValue;
       
        if ((nom === localNom) && (prenom === localPrenom)) {
            
            found = true;
        }
        else {
            i++;
        }
    }


    if (found) {
        text += "<em>"+"Adresse: " +"</em>"+ "<span class='adr'>";
        // On rÃ©cupÃ¨re l'adresse du patient
       
        var adresse = patient.getElementsByTagName("adresse").item(0);
        
        // adresse = ... Ã  complÃ©ter par une expression DOM
        text += adresseToText(adresse);
        text += "<br/>";

        var nSS = "0";
        // nss = rÃ©cupÃ©rer le numÃ©ro de sÃ©curitÃ© sociale grÃ¢ce Ã  une expression DOM
        nSS = patient.getElementsByTagName("numeroSecu").item(0).childNodes[0].nodeValue;
        
        text += " </span> "+"<em>"+"Numéro de sécurité sociale: " +"</em>"+ nSS + "\n";
    }
    text += "<br/>";



    // Tableau rÃ©capitulatif des Actes et de leur tarif
    text += "<table >";
    text += "<tr>";
    text += "<th> Type </th> <th> Clé </th> <th> Intitulé </th> <th> Coef </th> <th> Tarif </th>";
    text += "</tr>";

    var acteIds = actes.split(" ");
    
    for (var j = 0; j < acteIds.length; j++) {
        text += "<tr>";
        var acteId = acteIds[j];
        // alert("acteId "+acteId);
        text += acteTable(acteId);
        text += "</tr>";
    }
    
     text += "<tr><td colspan='4'>Total</td><td>" + totalFacture + "</td></tr>\n";
     
     text +="</table>";
     
     
    text +=
            "</body>\n\
    </html>\n";



    return text;
}

// Mise en forme d'un noeud adresse pour affichage en html
function adresseToText(adresse)
{
    var str = adresse.getElementsByTagName("numero").item(0).childNodes[0].nodeValue;
    str += " " + adresse.getElementsByTagName("rue").item(0).childNodes[0].nodeValue;
    str += "<br/>"  + adresse.getElementsByTagName("codePostal").item(0).childNodes[0].nodeValue;
    str += " " + adresse.getElementsByTagName("ville").item(0).childNodes[0].nodeValue ;
    // Mise en forme de l'adresse du patient
    // A complÃ©ter

    return str;
}


function acteTable(acteId)
{
    var str = "";
   
    var xmlDoc = loadXMLDoc("data/actes.xml");
    var actes;
    // actes = rÃ©cupÃ©rer les actes de xmlDoc
    actes = xmlDoc.getElementsByTagName("acte");
    // ClÃ© de l'acte (3 lettres)
    var cle;
    // Coef de l'acte (nombre)
    var coef;
    // Type id pour pouvoir rÃ©cupÃ©rer la chaÃ®ne de caractÃ¨res du type 
    //  dans les sous-Ã©lÃ©ments de types
    var typeId;
    // ChaÃ®ne de caractÃ¨re du type
    var type = "";
    // ...
    // IntitulÃ© de l'acte
    var intitule;

    // Tarif = (lettre-clÃ©)xcoefficient (utiliser les constantes 
    var AMIVAL = 3.15;
    var AISVAL = 2.65; 
    var DIVAL = 10.0;
    
    // (cf  http://www.infirmiers.com/votre-carriere/ide-liberale/la-cotation-des-actes-ou-comment-utiliser-la-nomenclature.html)      
    var tarif = 0.0;

    // Trouver l'acte qui correspond
    var i = 0;
    var found = false;
    
// A dÃ©-commenter dÃ¨s que actes aura le bon type...
    while ((i < actes.length) && (!found)) {
        var acte = actes[i];
        var localId = acte.getAttribute("id");
        //alert("localId "+localId);
        if ((acteId === localId)) {
            found = true;
        }
        else {
            i++;
        }
    }
    //alert(found);
    if (found) {
        // A complÃ©ter
        cle = acte.getAttribute("clé");
        //alert("cle "+ cle);
        coef = acte.getAttribute("coef");
        typeId =acte.getAttribute("type");
        found = false;
        var types;
        i=0;
        types = xmlDoc.getElementsByTagName("type");
        while ((i < types.length) && (!found)) {
           var typ = types[i];
           var localType = typ.getAttribute("id");
           //alert("localType " + localType);
           if ((typeId === localType)) {
                found = true;
                //alert(found);
            }
            else {
                i++;
            }
        }   
        if(found){
            type = typ.childNodes[0].nodeValue;
        }
        intitule = acte.childNodes[0].nodeValue;
        switch(cle){
            case "AMI":
                tarif  = AMIVAL * coef;
                break;
            case "DI":
                tarif  = DIVAL * coef;
                break;
            case "AIS":
                tarif  = AISVAL * coef;
                break;
            
        }
    
    }

    // A modifier
    str += "<td>" + type + "</td>";
    str += "<td>" + cle + "</td>";
    str += "<td>" + intitule + "</td>";
    str += "<td>" + coef + "</td>";
    str += "<td>" + tarif + "</td>";
    totalFacture += tarif;

    return str;
}



// Fonction qui charge un document XML
function loadXMLDoc(docName)
{
    var xmlhttp;
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.open("GET", docName, false);
    xmlhttp.send();
    xmlDoc = xmlhttp.responseXML;

    return xmlDoc;
}
